package logica_de_presentacion;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;

import comun.ValoracionPelicula;
import logica_de_negocio.ExcepDatosNoAdmitidos;


public class FormularioAnadirModificarValoracion extends JInternalFrame
		implements ActionListener {

	private static final long serialVersionUID = 1L;
	protected JButton salir, anadir;
	protected JTextField JTcomentario;
	protected JSpinner spiValoracion;;
	
	private String comen;
	private int val;

	/**
	 * Ventana para anadir/modificar valoraciones
	 * 
	 */

	public FormularioAnadirModificarValoracion(int actVal, String comentario) {

		super("Anadir/Modificar valoracion", true, true, true, true);

		this.setVisible(true);
		this.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
		JPanel textos = new JPanel(new GridLayout(2, 2));// FILAS,Columnas
		JPanel Botones = new JPanel();
		this.getContentPane().setLayout(new FlowLayout());// TIPO DE
															// ORDENACION

		this.comen=comentario;
		this.val=actVal;
		
		// TEXTO
		JTcomentario = new JTextField(comentario, 20);
		JLabel jlCome = new JLabel("Comentario: ");
		JPanel jpCome = new JPanel();
		jpCome.add(jlCome);
		jpCome.add(JTcomentario);
		textos.add(jpCome);

		// PUNTUACION
		spiValoracion = new JSpinner();// ACTUAL , MIN, MAX, SALTO
		spiValoracion.setModel(new SpinnerNumberModel(actVal, 0, 10, 1));
		spiValoracion.setEditor(new JSpinner.NumberEditor(spiValoracion, "0"));
		JLabel jlPuntuacion = new JLabel("Puntuacion:");
		JPanel jpPuntuacion = new JPanel();
		jpPuntuacion.add(jlPuntuacion);
		jpPuntuacion.add(spiValoracion);
		textos.add(jpPuntuacion);

		this.getContentPane().add(textos, "North");

		// BOTONES
		ImageIcon tick = createImageIcon("/logica_de_presentacion/imagenes/TICK.gif");
		anadir = new JButton("Anadir", tick);
		anadir.setVerticalTextPosition(AbstractButton.CENTER);
		anadir.setHorizontalTextPosition(AbstractButton.LEADING);
		anadir.setToolTipText("Indicar la valoracion en la base de datos"); 
		// aka LEFT, for left-to-right locales
		Botones.add(anadir);
		anadir.addActionListener(this);

		ImageIcon cancelar = createImageIcon("/logica_de_presentacion/imagenes/CANCELAR.gif");
		salir = new JButton("Cancelar", cancelar);
		salir.setVerticalTextPosition(AbstractButton.CENTER);
		salir.setHorizontalTextPosition(AbstractButton.LEADING);
		// aka LEFT, for left-to-right locales
		Botones.add(salir);
		salir.addActionListener(this);

		// ANADIMOS AL PANEL PRINCIPAL
		this.getContentPane().add(Botones, "South");

		// TAMANO JUSTO
		this.pack();

	}
	@Override
	public void actionPerformed(ActionEvent e) {

		JButton botonPulsa = (JButton) e.getSource();

		if (botonPulsa == salir) {

			int valor = JOptionPane.showConfirmDialog(this, "ESTA SEGURO ?");
			// YES=0, NO=1,Cancel =2
			if (valor == 0) {
				this.dispose();
			}
		} else {// MODIFICAR; o ANADIR

			if (botonPulsa == anadir) {
			
				boolean cor=false;
				
				comen=JTcomentario.getText();
				try {
					val=putPuntuacion();
					cor=true;
				} catch (ExcepDatosNoAdmitidos e1) {
					JOptionPane.showMessageDialog(new Frame(), "Revise la puntuacion selecionada");
				};
				if(cor){
					this.dispose();
				}
			}
		}
	}

	private Integer putPuntuacion() throws ExcepDatosNoAdmitidos {
		Integer dev = 0;
		Object a = spiValoracion.getValue();
		dev = (Integer) a;

		if (dev <= 0) {// POR SI METE NEGATIVOS
			ExcepDatosNoAdmitidos e = new ExcepDatosNoAdmitidos();
			e.setCausa("Revise la puntuacion selecionada");
			throw e;
		}

		return dev;
	}

	/**
	 * Returns an ImageIcon, or null if the path was invalid.
	 * 
	 * @param path
	 * @return Nos devuelve la imagen en formato ImageIcon
	 */
	protected static ImageIcon createImageIcon(String path) {
		java.net.URL imgURL = Button.class.getResource(path);
		if (imgURL != null) {
			return new ImageIcon(imgURL);
		} else {
			System.err.println("Couldn't find file: " + path);
			return null;
		}
	}

	public void cargarMO(ValoracionPelicula vp) {// FALTA RESPETAR LA FECHA

		JTcomentario.setText(vp.getComentario());
	}

	public String getComen(){
		return comen;
	}

	public int getVal(){
		return val;
	}
}